package com.note.leetcode;

/**
 * @ClassName 二叉树寻路
 * @Description TODO
 * @Author QiBin
 * @Date 2020/6/1417:15
 * @Version 1.0
 * 在一棵无限的二叉树上，每个节点都有两个子节点，树中的节点 逐行 依次按 “之” 字形进行标记。
 *
 * 如下图所示，在奇数行（即，第一行、第三行、第五行……）中，按从左到右的顺序进行标记；
 *
 * 而偶数行（即，第二行、第四行、第六行……）中，按从右到左的顺序进行标记。
 *
 *
 *
 * 给你树上某一个节点的标号 label，请你返回从根节点到该标号为 label 节点的路径，该路径是由途经的节点标号所组成的。
 *
 *  
 *
 * 示例 1：
 *
 * 输入：label = 14
 * 输出：[1,3,4,14]
 * 示例 2：
 *
 * 输入：label = 26
 * 输出：[1,2,6,10,26]
 *  
 *
 * 提示：
 *
 * 1 <= label <= 10^6
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/path-in-zigzag-labelled-binary-tree
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 **/
public class 二叉树寻路 {

    /**
     * 解题思路
     * 主要分成5大部分：
     * 1.把头结点1放入list，因为不管哪个点最终都需要1这个节点，如果label是1，直接返回
     * 2.求出来label是在哪一行，用的log2求的
     * 3.把label的序号转化为没有任何翻转的情况下的值
     * 4.求出来所有的没有任何翻转的节点位置
     * 5.把奇数行的节点翻转过来，最后返回
     */
    public static void main(String[] args) {

    }
}
